namespace Algorithm.LeetCode
{
    /// <summary>
    /// 第七题：整数反转
    /// </summary>
    public class No7
    {
        /*
         * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
         *
         * 如果反转后整数超过 32 位的有符号整数的范围，就返回 0。
         *
         * 假设环境不允许存储 64 位整数（有符号或无符号）。
         */

        public static int Reverse(int x)
        {
            long temp = 0;
            while (true)
            {
                //这里很巧妙：输入值对10进行求余得到末尾的数字，现有的结果增加10倍
                temp = temp * 10 + x % 10;
                x /= 10;
                if (x == 0)
                {
                    break;
                }
            }

            var result = (int) temp;
            return result == temp ? result : 0;
        }
    }
}